package Thread;

import java.util.Random;
import java.util.concurrent.CountDownLatch;
//使用CountDownLatch比较方便，如果使用join就只能使用每个线程执行一个任务
//借助CountDownLatch就可以让一个线程能执行多个任务
public class ThreadDemo35 {
    public static void main(String[] args) throws InterruptedException {
        //1.构造方法中的10表示10个线程/任务
        CountDownLatch latch=new CountDownLatch(10);
        for (int i = 0; i < 10; i++) {
            int id=i;
            Thread t1=new Thread(()->{
                Random random=new Random();
                //random.nextInt(5)  [0,5)
                int time=(random.nextInt(5)+1)*1000;
                System.out.println("线程"+id+"开始下载");
                try {
                    Thread.sleep(time);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                System.out.println("线程"+id+"结束下载");
                //2.告知CountDownLatch执行结束
                latch.countDown();
            });
            t1.start();
        }
        //3.通过这个await操作来等待所有任务结束，也就是countDown被调用了10次
        latch.await();
        System.out.println("所有任务都完成");
    }
}
